Many modern computing systems may implement virtualization of system resources for emulating a set of hardware resources configured to execute various processes. For example, a blade server may execute a hypervisor or virtual machine monitor that manages a plurality of virtual machines within a system. Each virtual machine may emulate a different set of hardware resources that may or may not be similar to the hardware resources of the server.
Some systems may include a resource that is implemented as a block device. A block device includes a number of blocks of non-volatile memory. Hard disk drives, optical drives, and solid state drives are all examples of hardware devices that can be implemented as a block device. Many systems may include a plurality of block devices for storing programs and/or data. These block devices do not necessarily have to be the same underlying technology. For example, some block devices may be conventional magnetic hard disk drives while other block devices may be solid state drives. Each of these devices may have different characteristics of operation. For example, one device may be faster than another device. When space is allocated in different devices, certain data may be stored on one device whereas other data is stored on another device. If the data stored on a slower device is accessed much more frequently than the data stored on a faster device, then the operation of the computer system may be inefficient. Thus, there is a need for addressing this issue and/or other issues associated with the prior art.